package edu.ynu.se.xiecheng.achitectureclass.entity;

import edu.ynu.se.xiecheng.achitectureclass.common.entity.LogicEntity;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonBackReference;
import javax.persistence.*;

/**
 * 设备实体类
 * 用于存储温室大棚中的设备信息，包括土壤传感器和摄像头设备
 */
@Data
@Entity
@Table(name = "device")
public class Device extends LogicEntity {
    /**
     * 设备名称
     * 例如："土壤湿度传感器1号"，"监控摄像头A"等
     */
    private String name;
    
    /**
     * 设备序列号
     * 每个设备的唯一标识符，用于与物理设备对应
     */
    @Column(unique = true)
    private String serialNumber;
    
    /**
     * FBOX设备编号
     * 用于调用FBOX API时的boxNo参数
     */
    private String boxNo;
    
    /**
     * 设备类型
     * 可选值：SOIL_SENSOR（土壤传感器）, CAMERA（摄像头）
     */
    private String deviceType;

    /**
     * 测量单位
     * 对于土壤传感器，例如："%"（湿度百分比）
     * 对于摄像头设备，此字段为null
     */
    private String unit;

    /**
     * 监控地址
     * 仅摄像头设备使用，用于存储视频流的URL
     * 对于土壤传感器，此字段为null
     */
    private String monitorUrl;
    
    /**
     * 所属温室大棚
     * 设备与温室大棚的多对一关系
     */
    @ManyToOne
    @JoinColumn(name = "greenhouse_id")
    @JsonBackReference
    private Greenhouse greenhouse;
}